package com.rpss.fichamento.telas;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;

import com.rpss.fichamento.R;
import com.rpss.fichamento.entidade.Fichamento;
import com.rpss.fichamento.entidade.Obra;
import com.rpss.fichamento.fachada.FichamentoFachada;

/**
 * Activity que utiliza o TableLayout para editar o carro
 * 
 * @author rlecheta
 * 
 */
public class EditarFichamento extends Activity {
	private static final String CATEGORIA = "fichamento";	
	
	static final int RESULT_SALVAR = 1;
	static final int RESULT_EXCLUIR = 2;

	// Campos texto
	private EditText campoTexto;
	private EditText campoPalavrasChave;
	private Long id;
	
	private Obra obra;
	
	private FichamentoFachada fachada;

	@Override
	protected void onCreate(Bundle icicle) {
		super.onCreate(icicle);

		Log.i(CATEGORIA, "EditarFichamento 1");
		setContentView(R.layout.form_editar_fichamento);
		Log.i(CATEGORIA, "EditarFichamento 2");
		fachada = new FichamentoFachada();
		Log.i(CATEGORIA, "EditarFichamento 3");		
		campoTexto = (EditText) findViewById(R.id.campoTexto);
		campoPalavrasChave = (EditText) findViewById(R.id.campoPalavrasChave);
		Log.i(CATEGORIA, "EditarFichamento 4");
		id = null;
		Bundle extras = getIntent().getExtras();
		// Se for para Editar, recuperar os valores ...
		if (extras != null) {
			
			id = extras.getLong("idObra");
			if (id != null) {
				obra = fachada.recuperarObra(id);
			}
			
			id = null;
			id = extras.getLong("idFichamento");
			Log.i(CATEGORIA, "id="+id);

			if ((id != null) && (id.longValue() != 0)) {
				// E uma edicao, busca o carro...
				Fichamento fichamento = buscarFichamento(id);
				campoTexto.setText(fichamento.texto);
				campoPalavrasChave.setText(fichamento.palavrasChave);
			}
		}
		Log.i(CATEGORIA, "EditarFichamento 5");
		ImageButton btCancelar = (ImageButton) findViewById(R.id.btCancelar);
		btCancelar.setOnClickListener(new OnClickListener() {
			public void onClick(View view) {
				setResult(RESULT_CANCELED);
				// Fecha a tela
				finish();
			}
		});
		Log.i(CATEGORIA, "EditarFichamento 6");
		// Listener para salvar o carro
		ImageButton btSalvar = (ImageButton) findViewById(R.id.btSalvar);
		btSalvar.setOnClickListener(new OnClickListener() {
			public void onClick(View view) {
				salvar();
			}
		});
		Log.i(CATEGORIA, "EditarFichamento 7");
		ImageButton btExcluir = (ImageButton) findViewById(R.id.btExcluir);
		Log.i(CATEGORIA, "EditarFichamento 8");
		if (id == null) {
			// Se id esta nulo, nao pode excluir
			btExcluir.setVisibility(View.INVISIBLE);
		} else {
			// Listener para excluir o carro
			btExcluir.setOnClickListener(new OnClickListener() {
				public void onClick(View view) {
					excluir();
				}
			});
		}
		Log.i(CATEGORIA, "EditarFichamento 9");		
	}

	@Override
	protected void onPause() {
		super.onPause();
		// Cancela para nao ficar nada na tela pendente
		setResult(RESULT_CANCELED);

		// Fecha a tela
		finish();
	}

	public void salvar() {

		Fichamento fichamento = new Fichamento();
		if (id != null) {
			// E uma atualizacao
			fichamento.id = id;
		}
		
		fichamento.texto = campoTexto.getText().toString();
		fichamento.palavrasChave = campoPalavrasChave.getText().toString();
		Log.i(CATEGORIA, "EditarFichamento palavrasChave="+fichamento.palavrasChave);

		// Salvar
		salvarFichamento(obra, fichamento);

		// OK
		setResult(RESULT_OK, new Intent());

		// Fecha a tela
		finish();
	}

	public void excluir() {
		if (id != null) {
			excluirFichamento(id);
		}

		// OK
		setResult(RESULT_OK, new Intent());

		// Fecha a tela
		finish();
	}

	// Buscar o mes pelo id
	protected Fichamento buscarFichamento(long id) {
		return fachada.recuperarFichamento(id);
	}

	// Salvar o mes
	protected void salvarFichamento(Obra obra, Fichamento fichamento) {
		fachada.salvarFichamento(obra, fichamento);
	}

	// Excluir o mes
	protected void excluirFichamento(long id) {
		fachada.excluirFichamento(id);
	}
}